package main

import (
	"bufio"
	"encoding/json"
	"fmt"
	"net"
	"os"
)

// 消息类型
type Msg struct {
	Content string // 消息内容
	User    string // 消息发布者
}

func read(conn net.Conn) {
	for {

		res := make([]byte, 1024)
		n, err := conn.Read(res)
		if err != nil {
			fmt.Println(err)
			return
		}
		result := res[:n]
		var msg Msg
		json.Unmarshal(result, &msg)
		fmt.Printf("[%s]:%s\n", msg.User, msg.Content)
	}
}

func write(conn net.Conn) {
	for true {
		reader := bufio.NewReader(os.Stdin)  // 从标准输入生成读对象
		content, _ := reader.ReadBytes('\n') // 读到换行
		// 发送数据
		conn.Write(content)
	}
}

func main() {
	// 1.连接服务端
	conn, err := net.Dial("tcp", "124.221.184.53:8080")
	if err != nil {
		fmt.Println(err)
		return
	}
	defer conn.Close()

	go read(conn)
	write(conn)

}
